#pragma once

#include "Globals.h"
#include "cAudio.h"

namespace game_engine
{

/*!
 * \class AudioManager
 * \brief 
 */
class AudioManager
{
///////////////////////////////////////////////////////////////////////////////
// Attribute definition
///////////////////////////////////////////////////////////////////////////////
private:
    static bool instanceFlag;
    static AudioManager *instance;

    cAudio::IAudioManager *manager;

///////////////////////////////////////////////////////////////////////////////
// Method definition
///////////////////////////////////////////////////////////////////////////////
public:
    // Constructors and destructors
    virtual ~AudioManager(void);

    // Others
    void createAudioSource(const string &id, const string &filename, 
        const bool stream) throw(...);
    void setSourceVolume(const string &id, const FLOAT32 vol) throw (...);
    void playSource2D(const string &id, const bool loop) throw (...);
    void stopSource(const string &id) throw (...);
    void pauseSource(const string &id) throw (...);

    // Getters
    static AudioManager* getInstance(void);

private:
    AudioManager(void);
    cAudio::IAudioSource* getAudioSource(const string &id) throw (...);

};

}
